# -*- codeing = utf-8 -*-
# @Time : 2021/2/27 11:51
# @Atuthor: 朱朱
# @File: 133将数据写入到内存.py
# @Software: PyCharm
""
"""
除了将数据写入到一个文件以外，我们还可以使用代码，
将数据暂时写入到内存里，可以理解为数据缓冲区。
Python中提供了StringIO和BytesIO这两个类
将字符串数据和二进制数据写入到内存里。
StringIO 可以将字符串写入到内存中，像操作文件一下操作字符串。
BytesIO 类，它的用法和StringIO相似，只不过在调用write方法写入时，需要传入二进制数据。
"""
from io import StringIO, BytesIO
s_io = StringIO()
s_io.write('jack')
s_io.write('tony')
# print(s_io.getvalue()) # jacktony

print('good',file=s_io) # 第一次打印,会把good添加到文章未尾
print('yes',file=s_io) # 将yes,添加到文件,另起一行
print('ok',file=s_io) # 将ok,添加到文件,另起一行
print(s_io.getvalue(),end='\n') # # 第一次打印,会把内存的数字读出来,然后附加打印的数据
# 以上语句输出如下格式
"""
jacktonygood # 内存操作,先进先出.
yes
ok
"""
print(s_io.getvalue()) # 会输出和上次一样的结果

s_io.close()
# print(s_io.getvalue()) # 报错,提示已经关闭了

b_io = BytesIO()
b_io.write('你好'.encode('utf8'))
print(b_io.getvalue()) # b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(b_io.getvalue().decode('utf8'))
b_io.close()